﻿using Startup.Project.Algorithm;
using Startup.Project.Classes;

namespace Startup.Shell.Domain.FunctionalityContracts
{
	public abstract class CommandContractBase
	{
		public abstract string CommandName { get; }
		
		public override bool Equals(object obj)
		{
			if (obj == null)
				return false;

			return obj.GetHashCode() == GetHashCode();
		}

		public override int GetHashCode()
		{
			return GetType().GetHashCode();
		}

		public override string ToString()
		{
			return CommandName;
		}

		public abstract AlgorithmAction[] GetContent(ClassBase dataContextType, StartupProperty property);
	}
}
